package app

import (
	"context"
	"strconv"

	"github.com/glennliao/apijson-go"
	"github.com/glennliao/apijson-go/config"
	"github.com/yitter/idgenerator-go/idgen"
)

const 行键生成器 = "idgen"

func 初始化行键生成器(api实例 *apijson.APIJSON) {

	var 生成选项 = idgen.NewIdGeneratorOptions(1)
	生成选项.WorkerIdBitLength = 6
	生成选项.BaseTime = 1591545600000 // 2020-06-08
	idgen.SetIdGenerator(生成选项)

	api实例.H获取配置().Z注册行键生成函数(config.RowKeyGenerator{
		M名称:   行键生成器,
		C参数列表: nil,
		C处理函数: func(上下文 context.Context, 请求 *config.H行键生成请求, 结果 *config.H行键生成结果) error {

			if 请求.F访问名称 == 表群组 {
				if 请求.S数据["group_id"] != nil {
					return nil
				}
			}

			结果.S设置行键(strconv.FormatInt(idgen.NextId(), 10))
			return nil
		},
	})
}
